package com.cupster.base_super_resource;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.Button;

import androidx.annotation.RequiresApi;


public class MDButton extends Button {
    //组合式自定义View（即ViewGroup）时，需初始化内部子view; 扩展式自定义View不需要调用
    private void initInnerView(Context context) {
        //...
    }
    private void initAttrs(Context context, AttributeSet attrs) {
        //1.获取属性数组
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MDButton);

        //2.获取属性值
        Drawable bgDrawable = typedArray.getDrawable(R.styleable.MDButton_mdb_bg);
        int txtColor = typedArray.getInteger(R.styleable.MDButton_mdb_txt_color,Color.parseColor("#808080"));
        String txt = typedArray.getString(R.styleable.MDButton_mdb_txt);
        boolean isAutoAnim = typedArray.getBoolean(R.styleable.MDButton_mdb_auto_anim, false);
        float fraction = typedArray.getFraction(R.styleable.MDButton_mdb_anim_pivotX, 1, 1, 1.0f);
        float alpha = typedArray.getFloat(R.styleable.MDButton_mdb_auto_anim_alpha , 1.0f);
        float minWidth = typedArray.getDimension(R.styleable.MDButton_mdb_min_width, 32.0f);
        int sizeType = typedArray.getInt(R.styleable.MDButton_mdb_size, 1);//0=small 1=normal 2=big
        int radiusCorner = typedArray.getInt(R.styleable.MDButton_mdb_radius_corner ,0);
        int delay = typedArray.getInt(R.styleable.MDButton_mdb_auto_anim_delay ,0);
        Log.e("bgDrawable",""+bgDrawable);
        Log.e("txtColor",""+txtColor);
        Log.e("txt",""+txt);
        Log.e("isAutoAnim",""+isAutoAnim);
        Log.e("fraction",""+fraction);
        Log.e("alpha",""+alpha);
        Log.e("minWidth",""+minWidth);
        Log.e("sizeType",""+sizeType);
        Log.e("radiusCorner",""+radiusCorner);
        Log.e("delay",""+delay);
        Log.e("==============","=========================================");

        //3.属性值 设置到 对应属性
        setText(txt);
        //tv.setDelay(delay);
        //...

        //4.释放
        typedArray.recycle();
    }
    //java动态创建view时调用
    public MDButton(Context context) {
        super(context);
        initInnerView(context);
    }
    //xml布局初始化时调用
    public MDButton(Context context, AttributeSet attrs) {
        super(context, attrs);
//        initInnerView(context);//组合式自定义View（即ViewGroup）时，需初始化内部子view; 扩展式自定义View不需要调用
        initAttrs(context, attrs);
    }
    //有默认style时，在MDButton(Context context, AttributeSet attrs)中调用MDButton(context,attrs,defStyleAttr);
    public MDButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
//        initInnerView(context);//组合式自定义View（即ViewGroup）时，需初始化内部子view; 扩展式自定义View不需要调用
        initAttrs(context, attrs);
    }
    //只有在API版本>21时才会用到
    //有默认style时，在MDButton(Context context, AttributeSet attrs)中调用
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public MDButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
//        initInnerView(context);//组合式自定义View（即ViewGroup）时，需初始化内部子view; 扩展式自定义View不需要调用
        initAttrs(context, attrs);
    }
}
